#include <head.h>

typedef struct arg_data
{
    int id;
    char name[128];
}arg_data;



void * Func_hqyj_1(void * arg)
{
    printf("你好你好 , 我是无参\n");
}

void * Func_hqyj_2(void * arg)
{
    // 参数转换
    int sock = *((int *)arg);
    printf("你好你好 , 我是整数有参\n");

    printf("sock = %d\n" , sock);
}

void * Func_hqyj_3(void * arg)
{
    // 参数转换
    char * buf = (char *)arg;
    printf("你好你好 , 我是字符串有参\n");

    printf("buf = %s\n" , buf);
}

void * Func_hqyj_4(void * arg)
{
    // 参数转换
    arg_data data = *((arg_data *)arg);
    printf("你好你好 , 我是多参数传递\n");

    printf("id = %d\n" , data.id);
    printf("name = %s\n" , data.name);
}

int main(int argc, char const *argv[])
{
    // 声明一个线程号
    pthread_t tid;

    // 无参数
    pthread_create(&tid , NULL , Func_hqyj_1 , NULL);

    // 有参数  一个参数 整数  需要取地址传输
    int sock = 10;
    pthread_create(&tid , NULL , Func_hqyj_2 , (void *)&sock);

    // 有参数  一个参数 字符串 不需要取地址传输
    char buf[128] = "小谭老师真帅\n";
    pthread_create(&tid , NULL , Func_hqyj_3 , (void *)buf);


    // 有参数 多个参数传递 
    arg_data S = {.id = 1 , .name = "李四"};
    pthread_create(&tid , NULL , Func_hqyj_4 , (void *) & S);

    while (1)
    {
        /* code */
    }
    
    return 0;
}

